class Game():
    def __init__(self, player_name):
        self.top_score = 0
        self.player_name = player_name

    def start_game(self):
        print("{}开始游戏".format(self.player_name))

    def show_top_score(self):
        print("历史最高分为{}".format(self.top_score))

    @staticmethod
    def show_help():
        print("这是游戏帮助信息")


class Hero():

    def __init__(self, name, sex, hp):
        self.name = name
        self.sex = sex
        self.hp = hp

    # 注意这里的 self, 直接拿去调用该方法的对象的属性
    def info(self):
        print("我叫{}, 我的性别是{},我的血量是{}".format(self.name, self.sex, self.hp))

    @classmethod
    def class_method(cls):
        print("我是类方法")

    @staticmethod
    def static_method():
        print("我是静态方法")

Hero.class_method()
Hero.static_method()


libai = Hero("李白","男",100)
anqila = Hero("安其拉","女",50)

print(libai.name) # 输出: 李白
print(libai.sex) # 输出: 男
print(libai.hp) # 输出: 100
libai.info() # 输出: 我叫李白, 我的性别是男,我的血量是100

print(anqila.name) # 输出: 安其拉
print(anqila.sex) # 输出: 女
print(anqila.hp) # 输出: 50
anqila.info() # 输出: 我叫安其拉, 我的性别是女,我的血量是50

# # 定义一个类
# import inspect
#
#
# class Dog:
#     pass # pass 关键字意思是这里先不写内容
#
# # 定义一个Dog类的对象
# xiaohei = Dog()
#
# # inspect.isclass() 函数用于判断是不是一个类, True表示是类, False反之
# print(inspect.isclass(Dog)) # 输出: True
# # ctrl + D 快速复制并粘贴到下一行
# print(inspect.isclass(xiaohei)) # 输出: False
#
# # type()函数, 查看一个数据的类型
# print(type(1)) # 输出: <class 'int'>
# print(type(xiaohei)) # 输出: <class '__main__.Dog'>
#
# # isinstance()函数, 用于判断参数1是否是参数2的对象
# print(isinstance(1, int)) # 输出: True
# print(isinstance(xiaohei, Dog)) # 输出: True
#
# xiaobai = Dog()
# # id() 函数, 查看变量的内存地址, 如果相同说明是同一对象
# print(id(xiaohei))
# print(id(xiaobai))
